package com.aaron;


import com.aaron.annotation.RpcScan;
import com.aaron.config.RpcServiceConfig;
import com.aaron.remoting.transport.netty.server.NettyRpcServer;
import com.aaron.serviceImpl.HelloServiceImpl2;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

// 使用netty进行数据传输
@RpcScan(basePackage = {"com.aaron"})
public class NettyServerMain {
    public static void main(String[] args) {
        // 通过注解注册了本服务
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(NettyServerMain.class);
        // 从spring的容器中获取这个bean. NettyRpcServer使用Component注解了
        NettyRpcServer nettyRpcServer = (NettyRpcServer) applicationContext.getBean("nettyRpcServer");

        // 使用实现接口2提供服务，需要一个服务对象，返回一个字符串
        HelloService helloService2 = new HelloServiceImpl2();
        RpcServiceConfig rpcServiceConfig = RpcServiceConfig.builder()
                .group("test2").version("version2").service(helloService2).build();

        // 向zk注册服务
        nettyRpcServer.registerService(rpcServiceConfig);

        nettyRpcServer.start();
    }
}
